home *** CD-ROM | disk | FTP | other *** search
/ Ahoy 1985 May / Ahoy_Magazine_85-05_1985_Double_L.d64 / 2-col directory (.txt) next >
Commodore BASIC  |  2022-10-26  |  4KB  |  115 lines

  1. 5 rem  ****************
  2. 10 rem define variables
  3. 15 rem ****************
  4. 20 poke 53280,6: poke 53281,0: poke 646,1: rem set screen, text colors
  5. 25 col=1: dim fi$(40)
  6. 30 wh$=chr$(5): gr$=chr$(30): ye$=chr$(158): og$=chr$(129): pu$=chr$(156)
  7. 35 cl$=chr$(147): ho$=chr$(19): rv$=chr$(145)+chr$(18): up$=chr$(145)
  8. 40 sp$=" ": for bl=0 to 18: sp$=sp$+" " : next
  9. 45 open 6,8,0,"$": rem open directory
  10. 50 rem **************************
  11. 55 rem find and print disk header
  12. 60 rem **************************
  13. 65 print cl$: rem clear screen
  14. 70 gosub 535: print ho$;
  15. 75 get#6, by$: if by$ <> chr$(34) then 75
  16. 80 print spc(8) "";og$;by$;
  17. 85 get#6, by$: if by$ <> "" then print by$;: goto 85
  18. 90 print wh$
  19. 95 rem  ************************
  20. 100 rem find and print filenames
  21. 105 rem ************************
  22. 110 for entry=0 to 19: i=i+1: f$="": sk=0
  23. 115 get#6, by$,by$:get#6, hb$,lb$
  24. 120 get#6, by$: if by$ <> chr$(32) then 230
  25. 125 get#6, by$: if by$ <> chr$(34) then 125
  26. 130 if col/2=int(col/2) then print tab(19)" ";
  27. 135 for bl=1 to 16: get#6, by$
  28. 140 if by$="" then 160
  29. 145 if by$=chr$(34) then sk=1: goto 160
  30. 150 if sk=0 then f$=f$+by$
  31. 155 goto 165
  32. 160 by$=chr$(32)
  33. 165 print by$;: next: fi$(i)=f$
  34. 170 get#6, by$
  35. 175 get#6, by$: if by$=chr$(32) then 175
  36. 180 print ","; by$; " "
  37. 185 get#6, by$: if by$ <> "" then 185
  38. 190 next: col=col + 1
  39. 200 ifcol > 2 and col/2 <> int(col/2) then i=0:gosub 560
  40. 205 if col=2 then print ho$: goto 110
  41. 210 poke 214,22: poke211,0:print rv$;ye$;"  ":gosub430: gosub 265: print ho$;wh$
  42. 215 if col/2 <> int(col/2) then for bl=0 to 19: print sp$: next: goto 225
  43. 220 for bl=0 to 19: print tab(19);sp$: next: gosub 580
  44. 225 print sp$;sp$;ho$: goto 110
  45. 230 rem *****************
  46. 235 rem print blocks free
  47. 240 rem *****************
  48. 245 bl = asc(hb$+chr$(0)): bl$=str$(bl+256 * asc(lb$+chr$(0)))
  49. 250 poke 214,22: poke 211,0: print rv$;ye$;"  "
  50. 255 poke 214,23:poke 211,10:print rv$;pu$;bl$;" blocks free ";: close 6: bc=1
  51. 260 gosub 430: gosub 265:print wh$ + cl$: end
  52. 265 rem ***********************
  53. 270 rem determine user's choice
  54. 275 rem ***********************
  55. 280 c=0: r=21: sc=1024: x=1864: d=54272: ok=0
  56. 285 get by$:if by$="" then 285
  57. 290 if by$=chr$(133) then gs=1: gosub 340: gs=0: return: rem display more dir.
  58. 295 if by$=chr$(134) then run: rem repeat dir.
  59. 300 if by$=chr$(135) then 385: rem load a program
  60. 305 if by$=chr$(136) then gosub 465: return: rem erase a program
  61. 310 if by$=chr$(17) then r=r+1: ok=1: if r>21 then r=21: rem cursor down
  62. 315 if by$=chr$(145) then r=r-1: ok=1: if r<1 then r=1: rem cursor up
  63. 320 if by$=chr$(29) then c=20: ok=1: rem cursor right
  64. 325 if by$=chr$(157) then c=0: ok=1: rem cursor left
  65. 330 if ok=0 then 265
  66. 335 gosub 340: goto 285
  67. 340 rem ***********
  68. 345 rem move cursor
  69. 350 rem ***********
  70. 355 for y=x to x+1
  71. 360 if peek(y) > 128 then poke y,(peek(y)-128): poke y+d,1
  72. 365 next: if gs then return
  73. 370 poke 211,c: poke 214,r: print up$;: x=sc+(40*r)+c
  74. 375 for y=x to x+1: if peek(y) < 128 then poke y,(peek(y)+128): poke y+d,7
  75. 380 next: return
  76. 385 rem **************
  77. 390 rem load a program
  78. 395 rem **************
  79. 400 close 6: z=r:if r>20 then return
  80. 405 if c=20 then z=z+20
  81. 410 if fi$(z)="" then return
  82. 415 print "[147][146]load"; chr$(34); fi$(z); chr$(34);",8"
  83. 420 print "run[145][145][145][145]"
  84. 425 poke 631,19: poke 632,13: poke 633,13: poke 198,3: end
  85. 430 rem ****
  86. 435 rem beep
  87. 440 rem ****
  88. 445 poke 54296,15: poke 54277,7: poke 54278,133
  89. 450 poke 54273,28: poke 54272,49: poke 54276,17
  90. 455 for k=1 to 150: next: poke 54276,18
  91. 460 poke 54296,0: return
  92. 465 rem ***************
  93. 470 rem erase a program
  94. 475 rem ***************
  95. 480 poke 214,25: poke 211,0:print rv$;"    erase -- are you sure (y/n)?       ";
  96. 485 get j$: if j$="" then 485
  97. 490 if j$ <> "y" then 500
  98. 495 goto510
  99. 500 gosub 535: gs=1:gosub 340: gs=0: if bc then 250
  100. 505 goto 210
  101. 510 z=r: if c=20 then z=z+20
  102. 515 if fi$(z)="" or r>20 then gosub535:goto 265
  103. 520 kl$="s0:"+fi$(z)
  104. 525 open 15,8,15: print#15, kl$: close15: run
  105. 535 rem ******************
  106. 540 rem print command line
  107. 545 rem ******************
  108. 550 poke 214,25: poke 211,0
  109. 555 print rv$+gr$+" f1=more  f3=repeat  f5=load  f7=erase ";: return
  110. 560 rem **********************
  111. 565 rem set filenames to nulls
  112. 570 rem **********************
  113. 575 for k=1 to 20: fi$(k)="": next: return
  114. 580 for k=21 to 40: fi$(k)="": next: return
  115.